package de.projectgoodmorning.alarm.dialogs;

import java.util.Set;

import android.app.Dialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import de.projectgoodmorning.alarm.R;
import de.projectgoodmorning.alarm.util.RsrcHelper;

/**
 * Der ChooseBtDeviceDialog ist ein Dialog, welcher alle moeglichen Bluetooth-Geraete
 * auflistet und zur Auswahl stellt.
 * 
 * Wenn ein Geraet gewaehlt wurde, wird der vom Entwickler implementierte 
 * OnBtDeviceChoosenListener ausgefueht.
 */
public class ChooseBtDeviceDialog extends Dialog implements OnItemClickListener {
	
	private Button btSettings;
	private ListView list;
	private OnBtDeviceChoosenListener listener;
	private BluetoothDevice[] listModel;
	
	/**
	 * erstellt einen ChooseBtDeviceDialog
	 * 
	 * @param context		erwartet den Context
	 * @param listener		erwartet einen implementierten Listener,
	 * 						wenn null, dann wird dieser nicht ausgefuehrt
	 */
	public ChooseBtDeviceDialog( Context context, OnBtDeviceChoosenListener listener ) {
		super( context );
		this.listener = listener;
	
		setTitle( RsrcHelper.getString( R.string.chooseBtDevice, getContext() ) );
		setContentView( R.layout.dialog_bt_choose );
		
		list = ( ListView ) findViewById( R.id.btDevicesListView );
		btSettings = ( Button ) findViewById( R.id.noPairedDevice );
		
		list.setOnItemClickListener( this );
		btSettings.setText( "Gerät ist nicht dabei" );
		btSettings.setOnClickListener( new View.OnClickListener() {
			@Override
			public void onClick( View v ) {
				Intent intentBluetooth = new Intent();
			    intentBluetooth.setAction( Settings.ACTION_BLUETOOTH_SETTINGS );
			    getContext().startActivity(intentBluetooth);
			}
		} );
		
		BluetoothAdapter localAdapter = BluetoothAdapter.getDefaultAdapter();
		Set<BluetoothDevice> set = localAdapter.getBondedDevices();
		
		if( set != null ) {
			int size = set.size();
			listModel = set.toArray( new BluetoothDevice[size] );
			
			list.setAdapter( new ArrayAdapter<BluetoothDevice>( 
					context, android.R.layout.simple_list_item_1, listModel ) {
				
				public View getView(int position, View convertView, 
						android.view.ViewGroup parent) {
					TextView row = ( TextView ) super.getView( position, convertView, parent );
					row.setText( listModel[position].getName() );
					return row;
				};
			} );
		}
	}

	@Override
	public void onItemClick( AdapterView<?> arg0, View arg1, int pos, long arg3 ) {
		if( listener != null && listModel != null ) {
			listener.btDeviceChoosen( listModel[pos] );
		}
		
		dismiss();
	}
}
